//
// Created by Dell on 2021/9/22.
//
#include <ctime>
#include <iostream>
#include <vector>
#include <queue>
#include <map>
#include <unordered_map>
#include <string.h>

using namespace std;
#ifndef UniformedCostSearchI_UniformedCostSearch_H
#define UniformedCostSearchI_UniformedCostSearch_H




class UniformedCostSearch {
private:
    int n,m; // n条边, m条边
    int startNode, finalNode; // 起点 / 终点
    int m1;
    struct Node{
        int val,id;
        Node(){}
        Node(int id,int val):id(id),val(val){}
        bool operator <(const Node &x)const{ // 优先队列重载比较函数
            return val>x.val;
        }
    }node[20000];
    clock_t startTime, endTime; // 开始和结束时间
    int expandTimes;// 扩展次数
    vector<int>close; // close表
    vector<int>dis; // dis表
    priority_queue<Node> open;// open表
    struct edge{
        int next,first,u,v,w;
    }e[20000];



public:
    UniformedCostSearch();
    ~UniformedCostSearch();

    void init();
    void add(int u,int v,int w);
    void show();

    void UniformedCostSearchDjstla(int x);
};

#endif //UniformedCostSearchI_UniformedCostSearch_H
